home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / varinc.lzh / STDDEFS.H < prev    next >
Text File  |  1979-11-30  |  7KB  |  133 lines

  1. /* HEADER FILE: STDDEFS.H */
  2. /*****************************************************************************/
  3. /* stddefs.h: standard defined symbols for general company use. The file     */
  4. /*   stdio.h should be #included with this file if DEBUG macros or screen-   */
  5. /*   control definitions will be used.                                       */
  6. /*****************************************************************************/
  7.  
  8. /* Symbols related to definition and use of shared data. Declarations of     */
  9. /*   data with storage class static or external should begin with these      */
  10. /*   shared-data modifiers:                                                  */
  11. /*     GLOBAL begins defining declarations for external data; data are       */
  12. /*       shared by all functions that IMPORT the data.                       */
  13. /*     SEMIGLOBAL begins defining declarations for static external data;     */
  14. /*       data are shared by functions in the same source file that IMPORT    */
  15. /*       the data.                                                           */
  16. /*     IMPORT begins non-defining declarations of GLOBAL and SEMIGLOBAL      */
  17. /*       data. A defining declaration allocates new, initialized storage.    */
  18. /*       Non-defining declarations refer to data defined elsewhere, to       */
  19. /*       allow examination or modification of those data.                    */
  20. #define GLOBAL 
  21. #define SEMIGLOBAL static
  22. #define IMPORT extern
  23.  
  24. /* Data types that are synonyms of other types. */
  25. typedef unsigned char unchar;                         /* unsigned characters */
  26. typedef unsigned short unshort;                   /* unsigned short integers */
  27. typedef unsigned long unlong;                      /* unsigned long integers */
  28. typedef char byte;                         /* byte: 1-byte number (0 to 127) */
  29. typedef char bflag;                         /* bflag: 1-byte true/false flag */
  30. typedef int flag;                         /* flag: int-sized true/false flag */
  31.  
  32. /* Constants for true or false data, to be used in conjunction   */
  33. /*   with synonym types flag (int sized) and bflag (char sized). */
  34. #ifndef YES                  /* If not already defined, then define YES, NO. */
  35. #define YES 1
  36. #define NO 0
  37. #endif
  38.  
  39. /*****************************************************************************/
  40. /* Symbols related to standard library function.                             */
  41. /*****************************************************************************/
  42.  
  43. /* Status of SUCCEED or FAIL passed to exit(); aborts program. */
  44. #define SUCCEED 0   
  45. #define FAIL 1
  46.  
  47. /* File handles (descriptor numbers) for standard files to be  */
  48. /*   used with the low level I/O functions read() and write(). */
  49. #define STDIN 0
  50. #define STDOUT 1
  51. #define STDERR 2
  52.  
  53. /*****************************************************************************/
  54. /* DEBUG macros either produce debug output or disappear, depending upon     */
  55. /*   whether or not DEBUG is defined. All take two arguments: a message      */
  56. /*   to display and a value. The type of the value determines which macro    */
  57. /*   will be correct to use. Pass a string that uniquely identifies this     */
  58. /*   debug call as the first argument, id.                                   */
  59. /*                                                                           */
  60. /*     SDBG(id, str)              Shows string str and its length.           */
  61. /*     LDBG(id, long)             Shows long.                                */
  62. /*     IDBG(id, int)              Shows int.                                 */
  63. /*     UIDBG(id, unsigned_int)    Shows unsigned int.                        */
  64. /*     CDBG(id, char)             Shows ASCII and hex for a char.            */
  65. /*     DDBG(id, double)           Shows double.                              */
  66. /*                                                                           */
  67. /*   Note: #include <stdio.h> should precede this file.                      */
  68. /*****************************************************************************/
  69.  
  70. #if defined(DEBUG)                           /* Is this a DEBUG compilation? */
  71.  
  72. /* Definitions for macro expansion prefix and suffix text. */
  73. /* Arguments to CUR_MV control screen position of debug output.          */
  74. /* Replace "stderr" with "stdout" if debug output redirection is needed. */
  75. #define DBG_BGN (CUR_SAVE, CUR_MV(24, 0), CLR_LINE, fprintf(stderr,
  76. #define DBG_END ), getch(), CUR_REST)
  77.  
  78. #define SDBG(id, str) DBG_BGN "SDBG! %s = %-.50s, L = %d _\b", \
  79.    (id), (str), strlen(str) DBG_END
  80. #define LDBG(id, lngv) DBG_BGN "LDBG! %s = %ld _\b", \
  81.    (id), (lngv) DBG_END
  82. #define IDBG(id, intv) DBG_BGN "IDBG! %s = %d _\b", \
  83.    (id), (intv) DBG_END
  84. #define UIDBG(id, uint) DBG_BGN "UIDBG! %s = %u _\b", \
  85.    (id), (uint) DBG_END
  86. #define CDBG(id, chr) DBG_BGN "CDBG! %s = %c, (\\x%02x) _\b", \
  87.    (id), (chr), (chr) DBG_END
  88. #define DDBG(id, dblv) DBG_BGN "DDBG! %s = %E _\b", \
  89.    (id), (dblv) DBG_END
  90. #else                    /* Not in DEBUG mode; make DEBUG macros disappear   */
  91.                          /*   by defining them with null expansions.         */
  92. #define SDBG(a, b)
  93. #define LDBG(a, b)
  94. #define IDBG(a, b)
  95. #define UIDBG(a, b)
  96. #define CDBG(a, b)
  97. #define DDBG(a, b)
  98. #endif
  99.  
  100.  
  101. /*****************************************************************************/
  102. /* Screen and Cursor-Control Commands:                                       */
  103. /* CUR_MV(r, c)  Move cursor to row r (1-25), column c (1-80).               */
  104. /* CUR_UP(n)     Move cursor up n lines (ignored if at top).                 */
  105. /* CUR_DN(n)     Move cursor down n lines (ignored if at bottom).            */
  106. /* CUR_RT(n)     Move cursor right n spaces (ignored at right margin).       */
  107. /* CUR_LT(n)     Move cursor left n spaces (ignored at left margin).         */
  108. /* CUR_SKIP      Send newline.                                               */
  109. /* CUR_SAVE      Save cursor position.                                       */
  110. /* CUR_REST      Restore cursor position.                                    */
  111. /* CLR_SCRN      Clear screen and move cursor to home.                       */
  112. /* CLR_LINE      Erase from cursor to end of line.                           */
  113. /* CLR_EOS(r, c) Erase from row r, col c to screen end, leave cursor at r,c. */
  114. /* BELL          Ring bell once by sending control-g.                        */
  115. /*                                                                           */
  116. /* NOTE: Definitions below are for ANSI.SYS terminal driver.                 */
  117. /*****************************************************************************/
  118.  
  119. #define CUR_MV(row, col) fprintf(stderr, "\33[%d;%dH", row, col)
  120. #define CUR_UP(num) fprintf(stderr, "\33[%dA", num)
  121. #define CUR_DN(num) fprintf(stderr, "\33[%dB", num)
  122. #define CUR_RT(num) fprintf(stderr, "\33[%dC", num)
  123. #define CUR_LT(num) fprintf(stderr, "\33[%dD", num)
  124. #define CUR_SKIP fputs("\n", stderr)
  125. #define CUR_SAVE fputs("\33[s", stderr)
  126. #define CUR_REST fputs("\33[u", stderr)
  127. #define CLR_SCRN fputs("\33[2J", stderr)
  128. #define CLR_LINE fputs("\33[K", stderr)  
  129. #define CLR_EOS(r, c) {byte i_; CUR_MV(r,c); \
  130.    for (i_=r; i_<=25; ++i_) CLR_LINE, CUR_DN(1); CUR_MV(r,c); }
  131. #define BELL fputc('\7', stderr)
  132.  
  133.